package com.project.zsxd.server.common.helper;

import cn.hutool.core.lang.UUID;
import com.google.common.collect.Sets;
import com.project.zsxd.server.common.enums.UploadTypeEnum;

import java.io.File;
import java.util.Set;

/**
 * 文件助手
 * @author kaler
 */
public class FileHelper {

    /**
     * 文件上传根目录
      */
    public static String FILE_UPLOAD_DEST;
    /**
     * 文件下载访问路径前缀
     */
    public static String FILE_DOWNLOAD_URL;

    /**
     * 图片文件后缀
     */
    private static final Set<String> IMG_SUFFIXS = Sets.newHashSet("img", "jpg", "jpeg", "png");


    /**
     * 获取上传文件的保存路径
     * @param uploadTypeEnum 上传业务类型
     * @param suffix 文件后缀 如 .jpg
     * @return 上传文件的保存路径
     */
    public static String getUploadPath(UploadTypeEnum uploadTypeEnum, String suffix) {
        String fileName = UUID.randomUUID().toString() + suffix;
        return FILE_UPLOAD_DEST + File.separator + uploadTypeEnum.getType() + File.separator + fileName;
    }

    /**
     * 获取下载文件的完整路径
     * @param uploadTypeEnum 下载业务类型
     * @param fileName 文件名
     * @return 下载文件的完整路径
     */
    public static String getAbsoluteDownloadUrl(UploadTypeEnum uploadTypeEnum, String fileName) {
        return FILE_DOWNLOAD_URL + File.separator + uploadTypeEnum.getType() + File.separator + fileName;
    }

    /**
     * 获取下载文件的相对路径
     * @param uploadTypeEnum 下载业务类型
     * @param fileName 文件名
     * @return 下载文件的相对路径
     */
    public static String getRelativeDownloadUrl(UploadTypeEnum uploadTypeEnum, String fileName) {
        return File.separator + uploadTypeEnum.getType() + File.separator + fileName;
    }

    /**
     * 是否是图片文件
     * @param fileName 文件名称
     * @return 是否是图片文件
     */
    public static boolean isImg(String fileName) {
        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
        return IMG_SUFFIXS.contains(suffix);
    }

}
